package cn.iocoder.yudao.module.system.controller.admin.mini.other.turnInfo.service.turninfo;

import cn.iocoder.yudao.module.system.controller.admin.mini.other.turnInfo.controller.admin.turninfo.vo.TurnInfoExportReqVO;
import cn.iocoder.yudao.module.system.controller.admin.mini.other.turnInfo.controller.admin.turninfo.vo.TurnInfoPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.mini.other.turnInfo.dal.dataobject.turninfo.TurnInfoDO;
import cn.iocoder.yudao.module.system.controller.admin.mini.other.turnInfo.dal.mysql.turninfo.TurnInfoMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;

import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;

/**
 * 转盘发送记录 Service 实现类
 *
 * @author 芋道源码
 */
@Service
@Validated
public class TurnInfoServiceImpl implements TurnInfoService {

    @Resource
    private TurnInfoMapper turnInfoMapper;

    @Override
    public Integer createTurnInfo(TurnInfoDO turnInfo) {
        // 插入
        turnInfoMapper.insert(turnInfo);
        // 返回
        return turnInfo.getId();
    }

    @Override
    public void updateTurnInfo(TurnInfoDO updateReqVO) {
        // 校验存在
        validateTurnInfoExists(updateReqVO.getId());
        // 更新
        turnInfoMapper.updateById(updateReqVO);
    }

    @Override
    public void deleteTurnInfo(Integer id) {
        // 校验存在
        validateTurnInfoExists(id);
        // 删除
        turnInfoMapper.deleteById(id);
    }

    private void validateTurnInfoExists(Integer id) {
        if (turnInfoMapper.selectById(id) == null) {
            throw exception(500);
        }
    }

    @Override
    public TurnInfoDO getTurnInfo(Integer id) {
        return turnInfoMapper.selectById(id);
    }

    @Override
    public List<TurnInfoDO> getTurnInfoList(Collection<Integer> ids) {
        return turnInfoMapper.selectBatchIds(ids);
    }

    @Override
    public PageResult<TurnInfoDO> getTurnInfoPage(TurnInfoPageReqVO pageReqVO) {
        return turnInfoMapper.selectPage(pageReqVO);
    }

    @Override
    public List<TurnInfoDO> getTurnInfoList(TurnInfoExportReqVO exportReqVO) {
        return turnInfoMapper.selectList(exportReqVO);
    }

}
